Предположим, что первоначальная позиция точки находится где угодно в пределах этого круга. Точное место не имеет значения. Итак, z равно 1.
Поскольку 1 в квадрате дает 1, то Z также равно 1. Его величина будет оставаться такой постоянно, сколько бы раз мы ни умножали единицу на саму себя. Точка будет вертеться и вертеться по кругу, но не сможет его покинуть.
Теперь рассмотрим случай, когда первоначальное z больше 1. Мы уже видели, как быстро точка убегает в бесконечность, если z равно 2. То же самое рано или поздно произойдет, даже если число будет превышать 1 совсем чуть-чуть. Пусть, к примеру, z = 1,000000000000000000001. Смотрите:
При первом возведении в квадрат Z становится
1,000000000000000000002
затем
1,000000000000000000004
1,000000000000000000008
1,000000000000000000016
1,000000000000000000032
И так далее — насколько хватит бумаги для распечатки. Для любых практических целей подобные величины округляют до 1. Наша точка не двинулась заметно ни вперед, ни назад. Она все равно остается в кружке с радиусом 1.
Но нули медленно исчезают, и цифры после запятой неуклонно маршируют влево. Неожиданно что-то появляется на месте третьей, второй, первой цифры после запятой. После небольшого числа операций числа начинают взрываться, как показывает этот пример:
1,001 1,002 1,004 1,008 1,016 1,032
1,066 1,136 1,292 1,668 2,783 7,745
59,987 3598,467 12948970
167675700000000
28115140000000000000000000000
И до бесконечности.
Справа может быть миллион, миллиард нулей, но результат не изменится. Постепенно цифры доберутся до запятой, и тогда Z вырвется в бесконечность.
Теперь рассмотрим другой случай. Допустим, z на микроскопическую величину меньше 1. Скажем,
0,99999999999999999999.
Как и раньше, долгое время, пока мы будем крутиться по спирали, все останется на своих местах. Но числа в дальнем правом конце будут постепенно уменьшаться. После нескольких тысяч или миллионов итераций — катастрофа! — Z вдруг начинает превращаться в ничто, оно растворяется в бесконечной цепочке нулей…
Проверьте это на компьютере. Он управляется только с двенадцатизначными цифрами? Не имеет значения. Вы получите тот же ответ. Честное слово.
Результаты наших действий, выработанного алгоритма, можно суммировать тремя законами. Некоторым они покажутся слишком тривиальными. Но не бывает тривиальных математических истин. Через пару шагов эти законы уведут нас во вселенную, поражающую удивительной красотой. Вот три закона «квадратичной» программы:
1. Если исходное z равняется 1, то результирующее Z всегда остается равным 1.
2. Если исходное z больше 1, то в результате число стремится к бесконечности.
3. Если исходное z меньше 1, то в результате число стремится к нулю.
Поэтому наш круг с радиусом 1 фактически представляет собой карту — или, если хотите, ограду, забор, делящий плоскость на две зоны. За пределами ограды числа, повинующиеся квадратичному закону, имеют свободу движения к бесконечности; числа, находящиеся внутри, — пленники, запертые и обреченные на полное изничтожение.
Тут кто-нибудь воскликнет: «Вы говорили только о расстоянии до точки старта. Но чтобы определить положение точки, нужно знать направление радиуса, вектор. Что скажете?»
Совершенно верно. К счастью, при делении z на два четких класса направление не имеет значения. Результат будет одинаковым, в какую бы сторону вектор ни указывал. Наш пример прост, мы работаем с особым множеством (назовем его «К», то есть квадратичным). Следовательно, можно смело игнорировать направление. Когда же мы придем к более сложному варианту множества Мандельброта, где векторы играют роль, я покажу очень хитрый математический фокус. Он поможет справиться с проблемами за счет использования сложных или воображаемых чисел (на самом деле они не особо сложны и вовсе не воображаемы). Пока в них нет нужды, и я обещаю больше не беспокоить вас подобным.
Множество «К» лежит внутри карты. Все его точки располагаются на окружности с радиусом 1. Она представляет собой непрерывную линию, не имеющую толщины. Если исследовать линию с помощью самого мощного микроскопа, она всегда будет выглядеть одинаково. Вы можете увеличить множество «К» до размеров Вселенной, но не увидите ничего, кроме линии с нулевой толщиной. Однако в ней нет ни одной дырочки; это абсолютно непроницаемый барьер, на веки вечные отделяющий все z менее единицы от z больше единицы.
Теперь мы наконец готовы рассмотреть множество Мандельброта, где все идеи, подсказанные здравым смыслом, переворачиваются вверх тормашками. Пристегните ремни.
В семидесятые годы двадцатого века французский математик Бенуа Мандельброт, сотрудничавший с Гарвардским университетом и компанией IBM, приступил к исследованию уравнения, впоследствии сделавшего его знаменитым. В динамической форме оно записывается так:
Z ↔ z2 + c
Единственное различие между этой формулой и той, что мы использовали для описания множества «К», это показатель c. Именно он, а не переменная z теперь является отправной точкой для нашей операции по составлению карты. При первом шаге по спирали z приравнивается к нулю.
Казалось бы, изменение крошечное. Невозможно представить, что за счет него будет сотворена целая вселенная. Мандельброт получил первые приближенные данные только к весне 1980 года, когда на компьютерных распечатках начали появляться смутные закономерности. Он услышал ту китсовскую песню:
…что не раз
Влетала в створки тайного окна
Над морем сумрачным в стране забвенной[46].
Новое уравнение ставит тот же вопрос, что и предыдущее, и дает на него ответ. Каковы очертания «территории», получающейся при нанесении чисел на карту? Для множества «К» это была окружность с радиусом, равным 1. Давайте внесем эту величину в уравнение Мандельброта и посмотрим, что произойдет. При первых шагах вычисления легко производить в уме. Но спустя несколько десятков итераций даже у суперкомпьютера сгорит процессор.
Для начала: z = 0, с = 1. Следовательно, Z = 1
Первая петля: Z = 12 + 1 = 2
Вторая: Z = 22 + 1 = 5
Третья: Z = 52 + 1 = 26
Четвертая: Z = 262 + 1… и так далее.
Моих программистских способностей хватило, чтобы однажды заставить компьютер подставить в уравнение числа покрупнее. Машина обыграла меня всего на две итерации, а потом начала округлять: